package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.enums.Zona;
import br.com.foxinline.manager.generico.ManagerPesquisarGenerico;
import br.com.foxinline.modelo.*;
import br.com.foxinline.servico.*;
import br.com.foxinline.util.Msg;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

/**
 *
 * @author laverson
 */
@ViewScoped
@ManagedBean
public class ManagerPesquisarAforamento extends ManagerPesquisarGenerico<Aforamento> implements Serializable {

    @EJB
    private AforamentoServico aforamentoServico;
    private Aforamento aforamento;

    @PostConstruct
    @Override
    public void init() {
        setServico(aforamentoServico);

        entidadeRemover = new Aforamento();
        aforamento = new Aforamento();
    }

    @Override
    public void pesquisar() {
        entidadePesquisar = aforamento;
        getSearchResults().setFirst(0);
        onLoadModel();
    }

    public List<SelectItem> zona() {
        List<SelectItem> items = new ArrayList<SelectItem>();

        for (Zona item : Zona.values()) {
            items.add(new SelectItem(item, item.getNome()));
        }

        return items;
    }

    public AforamentoServico getAforamentoServico() {
        return aforamentoServico;
    }

    public void setAforamentoServico(AforamentoServico aforamentoServico) {
        this.aforamentoServico = aforamentoServico;
    }

    public Aforamento getAforamento() {
        return aforamento;
    }

    public void setAforamento(Aforamento aforamento) {
        this.aforamento = aforamento;
    }

    @Override
    public void limpar() {
        init();
    }

    @Override
    public void remover() {
        try {
            entidadeRemover.setAtivo(false);
            aforamentoServico.update(entidadeRemover);
            Msg.messagemInfo(Msg.SuccessFull);
        } catch (Exception e) {
            Msg.messagemError(Msg.Failure);
            e.printStackTrace();
        }
    }

    public String nomeForeiros(List<Foreiro> foreiros) {

        StringBuilder sb = new StringBuilder();
        Foreiro foreiro;

        for (int i = 0; i < foreiros.size(); i++) {
            if (foreiros.size() > 1 && i > 0) {
                if (i < foreiros.size() - 1) {
                    sb.append(", ");
                } else {
                    sb.append(" e ");
                }
            }

            foreiro = foreiros.get(i);

            if (foreiros != null && foreiro != null) {
                sb.append(foreiros.get(i).getNome());
            }
        }

        return sb.toString().toUpperCase();
    }
}
